{{tag>Jaunty sauvegarde}}

----

====== Bacula : sauvegarder régulièrement son PC ======


**Bacula** est un logiciel open source de sauvegarde professionnel. Il permet de sauvegarder le contenu d'un PC, ou plusieurs PC en réseau.

Bacula dispose de très nombreuses fonctionnalités. Utilisé correctement vous serez toujours certain de pouvoir restaurer n'importe quel fichier, à n'importe quelle date (retrouver un texte par exemple tel qu'il était rédigé il y a deux mois, sachant que vous l'avez modifié 10 fois depuis, etc.)

**MAIS SA CONFIGURATION FINE NÉCESSITE DE NOMBREUSES CONNAISSANCES PROPRES AU MONDE DE LA SAUVEGARDE.**

Cette page ne pourra jamais vous dispenser d'aller jeter un coup d'œil au manuel (en français) situé [[http://www.bacula.org/fr/?page=documentation|ici]].

=====Pré-requis=====

FIXME
  * [[:tutoriel:comment_installer_un_paquet|installez le paquet]] **[[apt://xfs|xfs]]**((xfs est un format de fichier qui permet d'écrire des fichiers immenses et est sensé être plus rapide que ext2 ou ext3. Vos fichiers de sauvegarde vont faire chacun des centaines de Go))
  * [[:tutoriel:comment_installer_un_paquet|installez le paquet]] **[[apt://gparted|gparted]]**
  * [[:tutoriel:comment_installer_un_paquet|installez le paquet]] **[[apt://mysql-server|mysql]]**

=====Installation=====

  * [[:tutoriel:comment_installer_un_paquet|installez le paquet]] **[[apt://bacula|bacula]]**
  * [[:tutoriel:comment_installer_un_paquet|installez le paquet]] **[[apt://bacula-console-qt|bacula-console-qt]]** (utile pour la restauration)

<note warning>Il y a un léger bug dans le paquetage bacula avec ubuntu 9.04 (jaunty). Il ne faut pas installer en même temps MySQL et Bacula (ou l'initialisation de MySQL se fait APRES celle de Bacula). Par conséquent, il est recommandé d'installer d'abord MySQL et Bacula dans un deuxième temps </note>


===== Configuration=====

FIXME


===== Exemple d'utilisation : Sauvegarde automatique sur un second disque dur =====

Ce tutoriel est destiné à ceux qui souhaitent sauvegarder automatiquement leur configuration et leurs fichiers, afin de ne rien perdre en cas de crash disque, de corruption de données (ou simplement de suppression de fichiers trop rapide). 

Il est possible de sauvegarder sur des bandes magnétiques ou des DVD, mais étant donné le prix d'un lecteur de bandes, nous allons utiliser une méthode moins coûteuse : **un second disque dur** (quelques centaines de Go, ce qui dans une optique de sauvegarde personnelle est largement suffisant).

==== Préparation ====

=== Installation optionnelle ===

Afin de pouvoir être averti par mail que la sauvegarde a été effectuée ou des problèmes éventuels, installer :

  * [[:tutoriel:comment_installer_un_paquet|installez le paquet]] **[[apt://postfix|postfix]]** (choisir l'option site internet lors de l'installation)
  * [[:tutoriel:comment_installer_un_paquet|installez le paquet]] **[[apt://dovecotpop3d|dovecotpop3d]]** (afin de pouvoir lire les mails avec [[:Evolution]] ou [[:Thunderbird]] via POP3)


=== Installation du second disque dur ===

Je suppose ici que le second disque dur est monté sur **''/dev/sdb1''** (c'est à dire le second disque IDE/SATA).
Pour plus de détail sur la numérotation/nommage des disques dur, voir [[http://www.debian.org/releases/stable/i386/apcs04.html.fr]]

  - création du répertoire où seront stockés les fichiers de sauvegarde : **''/opt/SAUVEGARDE''** <code>sudo mkdir /opt/SAUVEGARDE</code>
  - création de la partition //xfs// et formatage du **deuxième** disque dur avec [[:gparted]]
  - [[:tutoriel:comment_editer_un_fichier|éditer]] **''/etc/fstab''** ((sudo gedit /etc/fstab)) et ajouter : <file>/dev/sdb1       /opt/SAUVEGARDE xfs     defaults     0       1</file>

<note warning>Attention avec l'utilisation de **gparted**! Ne vous trompez pas de disque dur, vous risquer de formater (effacer) votre propre installation d'Ubuntu! Assurez-vous de formater le disque dur ne CONTENANT PAS votre installation, votre installation étant le plus souvent sur le disque sda (premier disque IDE/SATA). </note>

Normalement il est maintenant possible de monter le second disque dur :
<code>sudo mount /opt/SAUVEGARDE</code>

<note important>Si vous avez une erreur en entrant cette commande, il est inutile d'aller plus loin. Il vous faut corriger le problème.</note>


==== Configuration de Bacula ====


=== Niveau de sauvegarde pour bacula ===

^Type de sauvegarde ^ Définition |
| **Totale**\\ (Full) | Une sauvegarde complète (autrement dit de tout ce qui est dans les répertoires listés).\\ Attention si vous modifiez la liste des fichiers/répertoires à sauvegarder dans ''/etc/bacula/bacula-dir.conf'', une sauvegarde totale sera effectuée la première fois. |
| **Differentielle**\\ (Differential) | Une sauvegarde qui inclut tous les fichiers modifiés depuis le lancement de la dernière sauvegarde complète (Full).\\ Notez que d'autres logiciels de sauvegarde peuvent définir ceci différemment. |
| **Incrementale**\\ (Incremental) | Une sauvegarde qui inclut tous les fichiers modifiés depuis le lancement de la dernière sauvegarde complète (Full), différentielle, ou incrémentale.\\ Normalement spécifié dans la directive //Level// (niveau) dans la définition de la ressource //Job//, ou dans une ressource //Schedule//. |

Pour plus de detail voir [[http://www.bacula.org/fr/dev-manual/Qu_est_ce_que_Bacula.html]].


=== Edition de /etc/bacula/bacula-dir.conf ===

[[:tutoriel:comment_editer_un_fichier|éditez]] **''/etc/bacula/bacula-dir.conf''**

  * Dans JobDefs, ajouter :
<file>
JobDefs {
  ....
  # cf http://www.bacula.org/en/dev-manual/Automated_Disk_Backup.html
  Full Backup Pool = Full-Pool
  Incremental Backup Pool = Inc-Pool
  Differential Backup Pool = Diff-Pool
  # fin modif 
  ......
}
</file>

  * Définir le 1er Job de sauvegarde
<file>
Job {
  Name = "BackupConti"
  JobDefs = "DefaultJob"
  Write Bootstrap = "/opt/SAUVEGARDE/bacula/Client1.bsr"
}
</file>

  * Définir où seront créées les restaurations
<file>
Job {
  Name = "RestoreFiles"
  #changer la ligne ci-dessous
  Where = /opt/SAUVEGARDE/bacula-restores
</file>

  * Déclarer ce qu'on va sauver
<file>
FileSet {  Name = "Full Set"
Include {
  Options {
    signature = MD5
    compression=GZIP
  }
  File = /etc
  File = /home/mon_nom_d'utilisateur
  File = /home/mon_second_utilisateur
</file>

  * Déclarer ce qu'on ne veut pas sauver
<file>
Exclude {
#    File = /proc
#    File = /tmp
  File = /home/mon nom d utilisateur/tmp
  File = /home/mon nom d utilisateur/Modèles
  File = /home/mon nom d utilisateur/.thumbnails
  File = /home/mon nom d utilisateur/.mozilla/firefox/e3s99zut.default/Cache
  File = /home/hmon nom d utilisateur/.gimp-2.6
  File = /home/mon nom d utilisateur/.google
  File = /home/mon nom d utilisateur/.googleearth
  File = /home/mon nom d utilisateur/.local/share/Trash/
#    File = /.journal
#    File = /.fsck
}
</file>

> .local/share/Trash/ est la corbeille
> .mozilla/firefox/e3s99zut.default/Cache est le cache du navigateur (remplacer "e3s99zut" par le dossier correspondant à votre profil)
> .thumbnails est pour les photos

  * Plannifier les sauvegardes à des heures ou le PC est allumé
<file>
Schedule {
  Name = "WeeklyCycle"
  Run = Full 1st sun at 19:05
  Run = Differential 2nd-5th sun at 19:05
  Run = Incremental mon-sat at 19:05
}
</file>

  * Sauvegarder la base de données. C'est avec celle-ci que Bacula peut savoir quel fichier a été sauvé et à quel moment. En cas de perte de la base de données (par ex. en cas de crash disque) il est nécessaire d'avoir une copie de celle-ci.
<file>
# This schedule does the catalog. It starts after the WeeklyCycle
Schedule {
  Name = "WeeklyCycleAfterBackup"
  Run = Full sun-sat at 19:20
}
</file>

  * Copier les bootstrap. Ceux sont les fichiers qui permettront la restauration en cas de perte de données. On les met sur la partition de sauvegarde
<file>
Write Bootstrap = "/opt/SAUVEGARDE/bacula/BackupCatalog.bsr"
Write Bootstrap = "/opt/SAUVEGARDE/bacula/Client1.bsr"
</file>

  * Remplacer <CatalogName> par le vrai nom (MyCatalog) pour le dump de la base de donnée MySQL dans le code ci dessous :
<file>
Job {
  # WARNING!!! Passing the password via the command line is insecure.
  # see comments in make_catalog_backup for details.
  # Arguments to make_catalog_backup are:
  #  make_catalog_backup <database-name> <user-name> <password> <host>
  #
  # Ubuntu uses make_catalog_backup_awk script for
  # security reasons
  # Replace <CatalogName> with the real Catalog name
  # 
  #autrement dit mettre cat1=MyCatalog dans la ligne ci dessous
  RunBeforeJob = "/usr/bin/awk -f /etc/bacula/scripts/make_catalog_backup_awk -v cat1=MyCatalog /etc/bacula/bacula-dir.conf"
  -----
}
</file>

<note tip>En cas d'oubli de cette étape, vous avez un message d'erreur "Could not stat /var/lib/bacula/bacula.sql: ERR=No such file or directory" dans le mail après la sauvegarde.</note>

  * Indiquer l'utilisateur qui va bien pour les mails
<file>
mail = mon_nom_utilisateur@localhost = all, !skipped
operator = mon_nom_utilisateur@localhost = mount
</file>


== Définition des pools de sauvegarde ==

Ajouter les lignes suivantes
(cf [[http://www.bacula.org/en/dev-manual/Automated_Disk_Backup.html]])

  * pour la sauvegarde totale
<file>
Pool {
  Name = Full-Pool
  Pool Type = Backup
  Recycle = yes           # automatically recycle Volumes
  AutoPrune = yes         # Prune expired volumes
  Volume Retention = 6 months
  Maximum Volume Jobs = 1
  Label Format = Full-
  #  Maximum Volumes = 9
}
</file>

  * pour la sauvegarde incrémentale ...
<file>
Pool {
  Name = Inc-Pool
  Pool Type = Backup
  Recycle = yes           # automatically recycle Volumes
  AutoPrune = yes         # Prune expired volumes
  Volume Retention = 20 days
  Maximum Volume Jobs = 6
  Label Format = Inc-
  Maximum Volumes = 7
}
</file>

  * ... et différentielle
<file>
Pool {
  Name = Diff-Pool
  Pool Type = Backup
  Recycle = yes
  AutoPrune = yes
  Volume Retention = 40 days
  Maximum Volume Jobs = 1
  Label Format = Diff-
  Maximum Volumes = 10
}
</file>


=== Edition de /etc/bacula/bacula-sd.conf ===

[[:tutoriel:comment_editer_un_fichier|éditez]] **''/etc/bacula/bacula-sd.conf''**

  * Donner le chemin où seront stockés les fichiers :
<file>
Device {
  Name = FileStorage
  Archive Device = /opt/SAUVEGARDE/bacula
</file>

<note tip>Le device //FileStorage// est déjà défini dans ''bacula-dir.conf'' comme l'endroit où va se faire la sauvegarde.</note>


=== Configuration de l'utilisateur ===

Afin  que l'utilisateur puisse avoir accès à la console **Bacula**, il doit être dans le groupe (au sens unix du terme) « **''bacula''** »
<code>adduser  mon_nom_utilisateur bacula</code>


=== Création des chemins d'accès avec les droits qui conviennent ===

Lancer les commandes ci-dessous dans un terminal :

<code>
sudo mkdir /opt/SAUVEGARDE/bacula
sudo chown -R bacula /opt/SAUVEGARDE/bacula
sudo chgrp -R bacula /opt/SAUVEGARDE/bacula

sudo mkdir /opt/SAUVEGARDE/bacula-restores
sudo chgrp bacula /opt/SAUVEGARDE/bacula-restores
sudo chown bacula /opt/SAUVEGARDE/bacula-restores
</code>


=== Recopie des fichiers de configuration de Bacula ===

Cette étape est utile en cas de crash disque (i.e. la totalité de la configuration de Bacula est perdue) :
<code>sudo cp /etc/bacula/*.conf /opt/SAUVEGARDE</code>

=== Relance de Bacula ===

Pour que Bacula prennent en compte les modifications apportées au fichier de configuration, lancer les commandes ci-dessous dans un terminal :

<code>
sudo /etc/init.d/bacula-director restart
sudo /etc/init.d/bacula-fd restart
sudo /etc/init.d/bacula-sd restart
</code>

=== Lancer l'interface graphique de bacula ===

Bacula lui même est un outil en ligne de commande mais un autre outil permet d'utiliser une interface graphique.
Pour cela il suffit de taper dans un terminal : <code>bat -c /etc/bacula/bat.conf</code>

<note help>
Dans le menu Applications / Outils système, le raccourci est faux (pour jaunty au moins)
Pour modifier le raccourci :
  * Entrer la commande suivante dans un terminal :<code>alacarte</code>
  * Dans //Outils système//, sélectionner « **''bat''** » et remplacer **''/usr/sbin''** par **''/usr/bin''**
</note>

A partir de cette interface graphique vous pouvez tester si votre installation fonctionne en effectuant une sauvegarde (vous devriez recevoir un mail à la fin) et en effectuant une restauration (qui sera dans **''/opt/SAUVEGARDE/bacula-restores''**).

<note important>Quand vous regardez les fichiers qui sont dans //bacula-restores// ne pas oublier que vous n'avez pas forcement les droits de tout voir. 
Autrement dit, le fichier peut avoir été restauré, mais si vous n'êtes pas dans le groupe **''bacula''** vous ne pourrez pas le voir.</note>


=====Liens=====


  * [[http://www.bacula.org/fr/?page=documentation|Documentation officielle de Bacula]]
  * [[http://fr.wikipedia.org/wiki/Bacula|Article wikipedia sur Bacula]]
  * [[http://www.opendoc.net/comment-sauvegarder-avec-bacula|Article Opendoc sur Bacula]]
----
